System.Collections.Generic.HashSet<, klasa T>
Ten artykuł zawiera dodatkowe uwagi dotyczące dokumentacji referencyjnej dla tego interfejsu API.
Klasa HashSet<T> udostępnia operacje zestawu o wysokiej wydajności. Zestaw to kolekcja, która nie zawiera zduplikowanych elementów i których elementy nie mają określonej kolejności.
Pojemność HashSet<T> obiektu to liczba elementów, które może pomieścić obiekt. HashSet<T> Pojemność obiektu jest automatycznie zwiększana w miarę dodawania elementów do obiektu.
Klasa HashSet<T> jest oparta na modelu zestawów matematycznych i udostępnia operacje zestawu o wysokiej wydajności podobne do uzyskiwania dostępu do kluczy Dictionary<TKey,TValue> kolekcji lub Hashtable . Mówiąc prosto, klasę HashSet<T> można traktować jako Dictionary<TKey,TValue> kolekcję bez wartości.
HashSet<T> Kolekcja nie jest sortowana i nie może zawierać zduplikowanych elementów. Jeśli duplikowanie kolejności lub elementów jest ważniejsze niż wydajność aplikacji, rozważ użycie List<T> klasy razem z Sort metodą .
HashSet<T> Udostępnia wiele operacji zestawu matematycznego, takich jak dodawanie zestawu (unii) i odejmowanie zestawu. W poniższej tabeli wymieniono podane HashSet<T> operacje i ich odpowiedniki matematyczne.
Operacja hashSet | Odpowiednik matematyczny |
---|---|
UnionWith | Dodawanie unii lub zestawu |
IntersectWith | Przecięcia |
ExceptWith | Ustawianie odejmowania |
SymmetricExceptWith | Różnica symetryczna |
Oprócz wymienionych operacji zestawu klasa HashSet<T> udostępnia również metody określania równości zestawu, nakładania się zestawów i tego, czy zestaw jest podzbiorem lub nadzbiorem innego zestawu.
Tylko program .NET Framework: w przypadku bardzo dużych HashSet<T> obiektów można zwiększyć maksymalną pojemność do 2 miliardów elementów w systemie 64-bitowym, ustawiając enabled
atrybut <gcAllowVeryLargeObjects>
elementu konfiguracji na true
w środowisku czasu wykonywania.
Klasa HashSet<T> implementuje interfejs ISet<T>.
Operacje zestawów hashSet i LINQ
LINQ zapewnia dostęp do Distinct
operacji , Union
, Intersect
i Except
ustawianych w dowolnym źródle danych, które implementuje IEnumerable interfejsy lub IQueryable . HashSet<T> zapewnia większą i bardziej niezawodną kolekcję operacji zestawów. Na przykład udostępnia porównania, HashSet<T> takie jak IsSubsetOf i IsSupersetOf.
Podstawową różnicą między operacjami i HashSet<T> operacjami zestawu LINQ jest to, że operacje zestawu LINQ zawsze zwracają nową IEnumerable<T> kolekcję, podczas gdy HashSet<T> równoważne metody modyfikują bieżącą kolekcję.
Zazwyczaj jeśli musisz utworzyć nowy zestaw lub jeśli aplikacja potrzebuje dostępu tylko do podanych operacji zestawu, użycie operacji zestawu LINQ dla dowolnej IEnumerable<T> kolekcji lub tablicy będzie wystarczające. Jeśli jednak aplikacja wymaga dostępu do dodatkowych operacji zestawu lub jeśli nie jest to pożądane lub konieczne do utworzenia nowej kolekcji, użyj HashSet<T> klasy .
W poniższej HashSet<T> tabeli przedstawiono operacje i ich równoważne operacje zestawu LINQ.
Operacja hashSet | Odpowiednik LINQ |
---|---|
UnionWith | Union |
IntersectWith | Intersect |
ExceptWith | Except |
Nie podano. | Distinct |
SymmetricExceptWith | Nie podano. |
Overlaps | Nie podano. |
IsSubsetOf | Nie podano. |
IsProperSubsetOf | Nie podano. |
IsSupersetOf | Nie podano. |
IsProperSupersetOf | Nie podano. |
SetEquals | Nie podano. |